package productorconsumidorpetri;



public class CVSemaforo {
	SemaforoBinario mutex;
	SemaforoBinario miCondicion;
	int bloqueados;
	
	public CVSemaforo(SemaforoBinario _mutex){
		mutex=_mutex;
		miCondicion=new SemaforoBinario(0);
		bloqueados=0;
	}
	
	public void Delay(){
		bloqueados++;
		mutex.Signal();
		miCondicion.Wait();
		mutex.Wait();
	}
	
	public void Resume(){
		if(bloqueados>0){
			bloqueados--;			
		}
		miCondicion.Signal();
	}
	
	public boolean Empty(){
		if(bloqueados>0){
			return false;
		}
		else{
			return true;
		}
	}

}
